package com.bitoon.basketdudes.ws;

import java.io.InputStream;
import java.util.*;
import org.apache.log4j.*;

/**
 * @author PacoFELC
 * @version 21/06/2012
 */
public class Configuracion {

    Logger     m_log = Logger.getLogger(DatosEquipo.class);
    Properties prop = null;

    private static final Configuracion singleton = new Configuracion();
    
    private Configuracion() {
	try {

            reload();
            
    	} catch (Exception e) {
            m_log.error("<<Error inicialización configuración>>: ",e);
        }

    }

    public static synchronized Configuracion getInstance() {
        return singleton;
    }

    // Busca un valor de tipo entero en el fichero config.properties
    // si no lo encuentra devuelve 0
    public int BuscarValorConfiguracionInteger ( String clave ) {
        int valor=0;

        try {
            valor=Integer.parseInt (prop.getProperty( clave ) );
            m_log.debug( "-->-->" +clave + " : " + valor );
        } catch (Exception e) {
            m_log.error("<<Could not load configuration key>>: "+clave ,e);
        }

        return valor;
    }

    // Busca un valor de tipo String en el fichero config.properties
    // si no lo encuentra devuelve null
    public String BuscarValorConfiguracionString ( String clave ) {
        String valor=null;

        try {
            valor = prop.getProperty( clave ) ;
            m_log.debug( "-->-->" + clave + " : " + valor );
        } catch (Exception e) {
            m_log.error("<<Could not load configuration key>>: "+clave ,e);
        }
        return valor;
    }

    public int reload( ) {
    // !!!!!!!!!!!!
    // OJO
    // ESTE METODO NO FUNCIONA
    // !!!!!!!!!!!!

        try {
            prop = new Properties();

            //load a properties file
            InputStream input=null;

            ClassLoader loader = LoginAction.class.getClassLoader();
            if (loader==null) {
                m_log.error ( "NO EXISTE  LoginAction.class.getClassLoader()");
                loader = Thread.currentThread().getContextClassLoader();
            }
            String propFile = "config.properties";
            input = loader.getResourceAsStream(propFile);
            m_log.info( "RUTA "+ propFile );
            prop.load( input );

            input.close();

            m_log.info("<<<<<< CARGAMOS CONFIG.PROPERTIES >>>>>>>>>>>> ");
            m_log.info( "path.avatar"                   + BuscarValorConfiguracionString ( "path.avatar" ));
            m_log.info( "premio.ropa_primer_equipo"     + BuscarValorConfiguracionInteger( "premio.ropa_primer_equipo" ));
            m_log.info( "premio.origen_primer_equipo"   + BuscarValorConfiguracionInteger( "premio.origen_primer_equipo" ));
            m_log.info( "factor_experiencia_equipo"     + BuscarValorConfiguracionInteger( "factor_experiencia_equipo" ));
            m_log.info( "factor_experiencia_jugadores"  + BuscarValorConfiguracionInteger( "factor_experiencia_jugadores" ));
            m_log.info( "gashaball"                     + BuscarValorConfiguracionInteger( "factor_experiencia_jugadores" ));
            m_log.info( "ranking_bajada_defensa"        + BuscarValorConfiguracionInteger( "ranking_bajada_defensa" ));
            m_log.info( "ranking_acumulado"             + BuscarValorConfiguracionInteger( "ranking_acumulado" ));
            m_log.info( "weekly_ladder"                 + BuscarValorConfiguracionInteger( "weekly_ladder" ));
            m_log.info( "marca.com"                     + BuscarValorConfiguracionInteger( "marca.com" ));
            m_log.error("<<FICHERO CONFIG.PROPERTIES CARGADO>> ");

            return 0;
    	} catch (Exception e) {
            m_log.error("############################## ");
            m_log.error("############################## ");
            m_log.error("<<Error loadin file>>: ",e);
            m_log.error("############################## ");
            m_log.error("############################## ");
        }
        return -1;
    }

}
